// 广度优先遍历(bfs)
// 1. 新建一个队列，把根节点带入队列
// 2. 把队头出队并访问
// 3. 把队头的children挨个入队
// 4. 重复第2、3步，直到队列清空

const tree = {
    val: 'a',
    children: [
        {
            val: 'b',
            children: [
                {
                    val: 'd',
                    children: []
                },
                {
                    val: 'e',
                    children: []
                }
            ]
        },
        {
            val: 'c',
            children: [
                {
                    val: 'f',
                    children: []
                },
                {
                    val: 'g',
                    children: []
                }
            ]
        }
    ]
}

const bfs = (root) => {
    const queue = [root]
    while(queue.length > 0) {
        const node = queue.shift()
        console.log(node.val)
        node.children.forEach(child => {
            queue.push(child)
        })
    }
}

bfs(tree)